package com.ydzh.kfqgwvisitor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ydzh.kfqgwvisitor.base.Result;
import com.ydzh.kfqgwvisitor.dto.VisitorDTO;
import com.ydzh.kfqgwvisitor.dto.VisitorFaceDTO;
import com.ydzh.kfqgwvisitor.entity.Visitor;
import com.ydzh.kfqgwvisitor.response.Response;
import com.ydzh.kfqgwvisitor.vo.IDCardVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


/**
 * <p>
 * 访客信息表  服务类
 * </p>
 *
 * @author zcj
 * @since 2021-09-01
 */
public interface VisitorService extends IService<Visitor> {

    /**
     * 通过leaderId查找随行访客信息
     *
     * @param id
     * @return
     */
    List<Visitor> getVisitorByLeaderId(Long id);

    /**
     * 被访人同意访客申请
     *
     * @param id 主访客id
     * @return
     */
    Result confirm(Long id);

    /**
     * 被访人拒绝访客申请
     *
     * @param id 主访客id
     * @return
     */
    Result refuse(Long id);

    /**
     * 通过被访人姓名调取海康接口(查询人员列表v2)
     *
     * @param id
     * @return
     */
    String personId(Long id);

    /**
     * 获取访客二维码
     *
     * @param receptionistId
     * @return
     */
    List<String> QRCode(Long receptionistId);

    /**
     * 根据id查找被访人姓名
     *
     * @param id
     * @return
     */
    String getBevisitorName(Long id);

    Result saveToApply(VisitorDTO visitorDTO);

    Result<IDCardVo> idCardInfo(String img, HttpServletRequest request);

    Result faceverify(String img, HttpServletRequest request);

    Result<com.ydzh.kfqgwvisitor.vo.VisitorVO> visitorInfo(Long visitorId);

    /**
     * 通过QRCode查询访客来访记录v2中的访客id
     *
     * @param QRCode
     * @return
     */
    //String orderIdByQRCode(String QRCode);

    /**
     * 通过身份证号查询访客信息
     *
     * @param idCardNo
     * @return
     */
    Visitor getByIdCardNo(String idCardNo);

    /**
     * 点击链接生成访客海康数据
     *
     * @param id
     * @return
     */
    Response getQRCode(Long id);

    /**
     * 增加海康返回的二维码内容到数据库中
     *
     * @param id
     * @return
     */
    Boolean addQrCode(Long id);

    /**
     * 点击链接生成访客卫健委
     *
     * @param id
     * @return
     * @throws Exception
     */
    Response getHealthCode(Long id);

    /**
     * 获取健康码状态
     *
     * @return
     */
    Integer getPassCode(Long id);

    /**
     * 山东省疫苗接种和核酸检测信息查询服务
     *
     * @param id
     * @return
     */
    Integer getVaccination(Long id);

    /**
     * 获取健康码颜色
     *
     * @param id
     * @return
     */
    Integer getPassCodeColor(Long id);

    Result upload(MultipartFile multipartFile);

    Result applyFace(VisitorFaceDTO visitorFaceDTO, HttpServletRequest request);

    /**
     * @description: 判断随从人员是否已录入人脸
     * @param: [id]
     * @return: com.ydzh.kfqgwvisitor.base.Result
     * @author: zcj
     * @date: 2021/11/22
     */
    Result passFaceCheck(Long id);

    /**
     * @description: 重新录脸
     * @param: [visitorFaceDTO]
     * @return: com.ydzh.kfqgwvisitor.base.Result
     * @author: zcj
     * @date: 2021/11/23
     */
    Result restartApplyFace(VisitorFaceDTO visitorFaceDTO);

}
